// com.city.java.announcements.service.AnnouncementService.java
package com.city.java.announcements.service;

import com.city.java.announcements.pojo.dto.AnnouncementQuery;
import com.city.java.announcements.pojo.entity.Announcements;
import com.city.java.base.response.JsonResult;
import com.city.java.base.utils.PageVO;

import java.util.List;

/**
 * 公告服务接口
 */
public interface AnnouncementService {
    /**
     * 添加公告
     * @param announcement 公告对象
     * @return 操作结果
     */
    JsonResult addAnnouncement(Announcements announcement);

    /**
     * 根据公告ID获取公告
     * @param announcementId 公告ID
     * @return 公告信息
     */
    JsonResult getAnnouncementById(Long announcementId);

    /**
     * 根据类型和状态获取公告列表
     * @param type 公告类型
     * @param status 公告状态
     * @return 公告列表
     */
    JsonResult getAnnouncementsByTypeAndStatus(Announcements.AnnouncementType type, Announcements.AnnouncementStatus status);

    /**
     * 根据标题获取公告列表
     * @param title 标题关键字
     * @return 公告列表
     */
    JsonResult getAnnouncementsByTitle(String title);

    /**
     * 获取所有公告列表
     * @return 公告列表
     */
    JsonResult getAllAnnouncements();

    /**
     * 分页查询公告列表
     * @param query 查询条件
     * @return 分页结果
     */
    PageVO<Announcements> select(AnnouncementQuery query);

    /**
     * 根据公告ID删除公告
     * @param announcementId 公告ID
     * @return 操作结果
     */
    JsonResult deleteAnnouncementById(Long announcementId);

    /**
     * 更新公告信息
     * @param announcement 公告对象
     * @return 操作结果
     */
    JsonResult updateAnnouncement(Announcements announcement);
}
